/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package transervfx.Dato.Entidad;

import java.io.Serializable;
import java.util.List;
import java.util.Objects;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

/**
 *
 * @author oscar
 */
@Entity



@NamedQueries ( { 
    @NamedQuery ( name = "ZonaRegional.findAll", query = "SELECT z FROM ZonaRegional z" ),
    @NamedQuery ( name = "ZonaRegional.findByNombre", query = "SELECT z FROM ZonaRegional z JOIN z.localidad l WHERE z.nombre = :nombre AND l.nombre = :nombreLocalidad" )
    }
  )
public class ZonaRegional implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String nombre;
    private String descripcion;

    @ManyToOne
    @JoinColumn(name = "LOCALIDAD_FK")
    private Localidad localidad;
    
    //subordinada
    @ManyToMany(mappedBy="zonasRegionals")
    private List<Repartidor> repartidor;

    public ZonaRegional(String nombre, Localidad localidad) {
        this.nombre=nombre;
        this.localidad=localidad;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
 public ZonaRegional() {
    }

    public Localidad getLocalidad() {
        return localidad;
    }

    public void setLocalidad(Localidad localidad) {
        this.localidad = localidad;
    }
    

    public String getDescripcion() {
        return descripcion;
    }
    
    

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

   /* @Override
    public boolean equals(Object obj) {
         System.out.println("ES UNA INSTANCIA DE ZONAREGIONAL?: "+ (obj instanceof ZonaRegional));
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final ZonaRegional other = (ZonaRegional) obj;
        if (!Objects.equals(this.nombre, other.nombre)) {
            return false;
        }
        return true;
    }*/

    
    
    

    @Override
    public boolean equals(Object object) {
        
        if (!(object instanceof ZonaRegional)) {
            System.out.println("NO INSTANCIA DE ZONA REGL");
            return false;
        }
        ZonaRegional other = (ZonaRegional) object;
        
        if(nombre==null) {
            return false;
        }
        
        if(!nombre.equals(other.nombre)) {
            return false;
        }
        
        if(!localidad.getNombre().equals(other.localidad.getNombre())) {
            return false;
        }
        
        return true;
    }

    @Override
    public String toString() {
        return this.nombre;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public List<Repartidor> getRepartidor() {
        return repartidor;
    }

    public void setRepartidor(List<Repartidor> repartidor) {
        this.repartidor = repartidor;
    }
    
    
}
